package com.springboot.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Data
@TableName(value = "ssm_role") //mybatis plus 操作的表名
public class Role extends Model<Role> implements Serializable{

    private static final long serialVersionUID = 1L;

    @TableId(value = "id",type = IdType.AUTO)//value="表列名"  IdType.AUTO自动增长
    private Integer id;
    @TableField
    private String roleName;
    @TableField(fill = FieldFill.INSERT)
    @TableLogic(value = "0",delval = "1")
    private String status;
    @TableField(value="create_time",fill= FieldFill.INSERT)
    private Date createTime;
    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    @TableField(exist = false)
    private Date startTime;
    @TableField(exist = false)
    private List<RoleMenu> roleMenus;//一个角色中用哪些菜单id
    @TableField(exist = false)
    private List<User> users; //一个角色被分配给哪些用户



}
/*
简单认识一下常用注解
@TableName 用于定义表名
    注
    常用属性
        value 属性(可以有可以无) 用于定义表名
@TableId  用于定义表的主键
    注
    常用属性
        value 用于定义注解字段名(列名)
        type 用于定义主键类型(主键策略)
           主键策略
           IdType.AUTO 主键自增，系统分配不需要手动输入
           IdType.NONE 未设置主键
           IdType.INPUT 手动输入主键
           IdType.ASSIGN_ID 系统分配id,用于数值型数据(Long 对应mysql数据库BIGINT)
           IdType.ASSIGN_UUID 系统分配id,用于字符串的数据类型(String 对应mysql数据库的varchar(32))
@TableField 用于定义表的非主键列
    注
    常用属性
        value 定义非主键列名
        exist 用于指明是否为数据列，true(默认)为是，false为不是
        fill  定义某列为自动填充策略
            填充策略(一般用于填充时间  创建时间、更新时间等)
            FieldFill.DEFAULT   默认不填充
            FieldFill.INSERT   插入时填充
            FieldFill.UPDATE   更新时间填充
            FieldFill.INSERT_UPDATE 插入、更新时间填充
@TableLogic 用于定义逻辑删除字段(非物理删除)
    注
    常用属性
        value 用于定义未删除时的字段
        delval 用于定义删除时改变的值

@Version 用于字段的乐观锁
 */
